$┼7╞9 ╨┼┌╥╪ ╙AVE THE VALUE IN .╪ AS THE STACK POINTER. ╘HIS HAS NO SPECIAL SIGNIFICANCE, IT IS JUST A CONVENIENT STORAGE LOCATION.
$┼7╞├ ╨┼20 ╥ESTORE .╪ FROM THE STACK POINTER. ╘HIS IS THE START OF THE MAIN FLASH LOOP.
$┼7╞─ ╨┼30 ╙ET ╠┴╘├╚╙ [$┴8] TO %XXXXX110 TO TURN ON THE ╠┼─╙.
$┼803 ╘RANSFER ╠┴╘├╚╙ [$┴8] TO ╚─╫╔╠ [$┴000].
$┼808 ╙ET UP AND EXECUTE A LOOP TO CONSUME ABOUT 0.25 SECONDS.
$┼812 ╙ET ╠┴╘├╚╙ [$┴8] TO %XXXXX001 AND COPY THIS VALUE TO ╚─╫╔╠ [$┴000] TO TURN OFF BOTH ╠┼─S.
$┼81─ ╨┼40 ╙ET UP AND EXECUTE A LOOP TO CONSUME ABOUT 0.25 SECONDS.
$┼827 ─ECREMENT .╪ (THE FLASH COUNTER) AND IF .╪ IS NON-NEGATIVE THEN LOOP BACK TO ╨┼30 TO FLASH THE ╠┼─S AGAIN.
$┼82┴ ╫HEN .╪ IS NEGATIVE, LOOP BACK TO ╨┼40 ANOTHER 3 TIMES TO WAIT APPROXIMATELY 0.75 SECONDS BETWEEN GROUPS OF FLASHES.
$┼82┼ ╟O INTO AN INFINITE LOOP BACK TO ╨┼20 TO KEEP FLASHING THE ╠┼─S UNTIL THE POWERE IS TURNED OFF.
╫├╚╥┴═ ─ETERMINE SEGMENT OF ╥┴═ IN WHICH ERROR OCCURRED
$┼830 ╠OAD .┴ FROM ╙┴╓╨╬╘+1 [$41] TO SEE WHERE THE MEMORY CHECK FAILED. ╔F .┴ IS IN THE RANGE $40-$47 INCLUSIVE THEN BRANCH TO ╨┼┌╥1 [$┼7╞1] TO FLASH THE ╠┼─S TWO TIMES.
$┼836 ╔F .┴ IS IN THE RANGE $48-$4╞ INCLUSIVE THEN BRANCH TO ╨┼┌╥2 [$┼7╞4] TO FLASH THE ╠┼─S THREE TIMES.
$┼83┴ ╧THERWISE, DON'T WORRY. ┴SSUME THAT THE EXTRA ╥┴═ AT $5000-$57╞╞ DOES NOT EXIST BY SETTING .┴ TO ZERO (TO INDICATE THIS IS A SINGLE DRIVE) AND CONTINUE WITH THE DISK INITIALIZATION AT ─╔┴╟╧╦ [$┼883].
─╙╦╔╬╘ ─ISK DRIVE INITIALIZATION ROUTINE
$┼83╞ ─ISABLE INTERRUPTS AND CLEAR THE DECIMAL MODE.
$┼841 ╙ET UP TO CHECK THE ╥┴═ WITHIN THE 6511╤ STARTING AT LOCATION $40.
$┼843 ╨╓10 ╙TORE BIT PATTERNS OF %01010101 AND %10101010 INTO THE ╥┴═, LOAD THEM BACK, AND THEN CHECK THEM TO ENSURE THE ╥┴═ IS WORKING CORRECTLY. ╔F NOT THEN BRANCH TO ╨┼┌╥0 [$┼7╞7] TO FLASH THE ╠┼─S ONCE.
$┼857 ╔NCREMENT .╪ TO NEXT LOCATION AND LOOP BACK TO ╨╓10 IF THERE IS MORE MEMORY ON THE CHIP TO CHECK.
║FP
$┼85┴ ─ECREMENT .╪ TO $╞╞ AND SET THE STACK POINTER TO THIS VALUE.
$┼85├ ╙ET ╙┴╓╨╬╘+1[$41] TO $40 SO IT POINTS TO $4000.
$┼860 ╙ET .┘ TO ZERO TO CHECK THIS PAGE OF ╥┴═.
$┼862 ╥┴10 ╙TORE BIT PATTERNS OF %01010101 AND %10101010 INTO (╙┴╓╨╬╘),┘ [($40),┘], LOAD THEM BACK, AND THEN CHECK THEM TO ENSURE THE ╥┴═ IS WORKING CORRECTLY. ╔F NOT THEN BRANCH TO ╫├╚╥┴═ [$┼830] TO DETERMINE WHERE THE PROBLEM IS.
$┼872 ╙ET THE ╥┴═ LOCATION (╙┴╓╨╬╘),┘ [($40),┘] TO ZERO.
$┼876 ╔NCREMENT .┘ AND LOOP BACK TO ╥┴10 TO CONTINUE CHECKING THIS PAGE IF .┘ IS NOT ZERO.
$┼879 ╔NCREMENT ╙┴╓╨╬╘+1 [$41] TO POINT TO THE NEXT PAGE OF ╥┴═ TO BE CHECKED.
$┼87─ ╔F ╙┴╓╨╬╘+1 [$41] < $58 THEN LOOP BACK TO ╥┴10 TO CHECK THIS PAGE OF ╥┴═.
$┼881 ╙ET .┴ TO $01 TO INDICATE THE ╥┴═ AT $5000-$57╞╞ EXISTS.
$┼883 ─╔┴╟╧╦ ╙AVE .┴ IN ─╒┴╠╞╠ [$┬7] TO INDICATE THE TYPE OF DRIVE.
$┼885 ╩╙╥ ╙╘┴╘╔╬ [$╞┼25] TO SET PORT ┬ IN ╙╘┴╘╒╙ MODE.
$┼888 ─ETERMINE THE DEVICE NUMBER FROM PORT ┬ [$01], ╧╥ WITH $48 (TALK ADDRESS), AND SAVE IN ╘╠╦┴─╥ [$78].
$┼892 ┼╧╥ THE TALK ADDRESS WITH $60 TO GET THE LISTEN ADDRESS AND SAVE IN ╠╙╬┴─╥ [$77].
$┼896 ╔NITIALIZE ┬╒╞╘┴┬ [$7┴-$91] POINTERS TO $00/$40 ($4000), $00/$41 ($4100), ETC.
$┼8┴7 ╙ET THE POINTER TO THE COMMAND BUFFER AT ┬╒╞╘┴┬+$18/┬╒╞╘┴┬+$19 [$92/$93] TO $00/$4┼ ($4┼00).
$┼8┴╞ ╙ET THE POINTER TO THE ERROR BUFFER AT ┬╒╞╘┴┬+$1┴/┬╒╞╘┴┬+$1┬ [$94/$95] TO $64/$4┼ ($4┼64).
$┼8┬7 ╙ET ╠╔╬╘┴┬ [$4├8┴-$4├9├] TO $╞╞ TO INDICATE ALL CHANNELS ARE INACTIVE.
$┼8├1 ╙ET TABLES ┬╒╞0 [$96-$9─], ┬╒╞1 [$9╞-$┴6], AND ╙╙ [$4├5┴-$4├60] TO $╞╞ TO INDICATE THESE BUFFERS ARE UNUSED.
$┼8├─ ╙ET ┬╒╞0+6 [$9├] TO $0├ (THE COMMAND CHANNEL).
$┼8─1 ╙ET ┬╒╞0+7 [$9─] TO $0─ (THE ERROR CHANNEL).
$┼8─5 ╙ET ╠╔╬╘┴┬+$10 [$4├9┴] TO $07 TO INDICATE THE ERROR CHANNEL IS OPEN FOR READING USING CHANNEL 7.
$┼8─┴ ╙ET ╠╔╬╘┴┬+$0╞ [$4├99] TO $86 TO INDICATE THE COMMAND CHANNEL IS OPEN FOR WRITING USING CHANNEL 6.
$┼8─╞ ╩╙╥ ╙┼╘╠╔╬ [$├9┼├] TO SET THE ╠╔╬╒╙┼ VECTOR.
$┼8┼2 ╙ET ├╚╬╥─┘+$08 [$4├84] TO $01 TO INDICATE THE COMMAND CHANNEL IS READY TO LISTEN.
$┼8┼7 ╙ET ├╚╬╥─┘+$09 [$4├85] TO $88 TO INDICATE THE ERROR CHANNEL IS READY TO TALK.
$┼8┼├ ╙ET ┬╒╞╒╙┼ [$4├┬1] TO %00000000 TO INDICATE BUFFERS 0-7 ARE AVAILABLE.
$┼8╞1 ╙ET ┬╒╞╒╙┼+1 [$4├┬2] TO %11111100 TO INDICATE BUFFERS 8-9 ARE AVAILABLE AND ALL OTHERS ARE IN USE.
$┼8╞6 ╙ET ╫╨╙╫/╫╨╙╫+1 [$4├2─/$4├2┼] TO $01 TO SET UP THE WRITE PROTECT STATUS.
$┼8╞┼ ╩╙╥ ╒╙╥╔╬╘ [$├─51] TO INITIALIZE THE USER JUMP TABLE.